ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

һվʽͳһ·µ»ØÖµ·â×°¡¢Òì³£´¦Àí¡¢Òì³£´íÎóÂë½â¾ö·½°¸¡ª×îÇ¿µÄSping Boot½Ó¿ÚÓÅÑÅÏìÓ¦´¦ÀíÆ÷(Ò»)
2023-07-25 21:26:29 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:65´Î
Tags£º·â×° ³£´¦Àí ³£´íÎó ½â¾ö·½ Ç¿µÄ Sping Boot Ó¦´¦Àí

×÷Õߣº¾©¶«ÎïÁ÷ ñûÓñ½Ü

1. ¼ò½é

Graceful ResponseÊÇÒ»¸öSpring BootÌåϵϵÄÓÅÑÅÏìÓ¦´¦ÀíÆ÷£¬Ìṩһվʽͳһ·µ»ØÖµ·â×°¡¢Òì³£´¦Àí¡¢Òì³£´íÎóÂëµÈ¹¦ÄÜ¡£

ʹÓÃGraceful Response½øÐÐweb½Ó¿Ú¿ª·¢²»½ö¿ÉÒÔ½ÚÊ¡´óÁ¿µÄʱ¼ä£¬»¹¿ÉÒÔÌá¸ß´úÂëÖÊÁ¿£¬Ê¹´úÂëÂß¼­¸üÇåÎú¡£

Ç¿ÁÒÍƼöÄ㻨3·ÖÖÓѧ»áËü£¡

Graceful ResponseµÄGithubµØÖ·£º https://github.com/feiniaojin/graceful-response £¬»¶Ó­star£¡

Graceful ResponseµÄ°¸Àý¹¤³Ì´úÂ룺https://github.com/feiniaojin/graceful-response-example.git

2. Spring Boot Web API½Ó¿ÚÊý¾Ý·µ»ØµÄÏÖ×´

ÎÒÃǽøÐÐSpring Boo Web API½Ó¿Ú¿ª·¢Ê±£¬Í¨³£´ó²¿·ÖµÄController´úÂëÊÇÕâÑùµÄ£º

public class Controller {
    @GetMapping("/query")
    @ResponseBody
    public Response query(Parameter params) {

        Response res = new Response();
        try {
            //1.УÑéparams²ÎÊý£¬·Ç¿ÕУÑé¡¢³¤¶ÈУÑé
            if (illegal(params)) {
                res.setCode(1);
                res.setMsg("error");
                return res;
            }
            //2.µ÷ÓÃServiceµÄһϵÁвÙ×÷
            Data data = service.query(params);
            //3.Ö´ÐÐÕýȷʱ£¬½«²Ù×÷½á¹ûÉèÖõ½res¶ÔÏóÖÐ
            res.setData(data);
            res.setCode(0);
            res.setMsg("ok");
            return res;
        } catch (BizException1 e) {
            //4.Òì³£´¦Àí£ºÒ»¶Ñ³óªµÄtry...catch£¬Èç¹ûÓдíÎóÂëµÄ£¬»¹ÐèÒªÊÖ¹¤Ìî³ä´íÎóÂë
            res.setCode(1024);
            res.setMsg("error");
            return res;
        } catch (BizException2 e) {
            //4.Òì³£´¦Àí£ºÒ»¶Ñ³óªµÄtry...catch£¬Èç¹ûÓдíÎóÂëµÄ£¬»¹ÐèÒªÊÖ¹¤Ìî³ä´íÎóÂë
            res.setCode(2048);
            res.setMsg("error");
            return res;
        } catch (Exception e) {
            //4.Òì³£´¦Àí£ºÒ»¶Ñ³óªµÄtry...catch£¬Èç¹ûÓдíÎóÂëµÄ£¬»¹ÐèÒªÊÖ¹¤Ìî³ä´íÎóÂë
            res.setCode(1);
            res.setMsg("error");
            return res;
        }
    }
}

Õâ¶Î´úÂë´æÔÚʲôÎÊÌâÄØ£¿ÕæÕýµÄÒµÎñÂß¼­±»ÈßÓà´úÂëÑÍû£¬¿É¶ÁÐÔÌ«²î¡£

ÕæÕýÖ´ÐÐÒµÎñµÄ´úÂëÖ»ÓÐ

Data data=service.query(params);

ÆäËû´úÂë²»¹ÜÊÇÕý³£Ö´Ðл¹ÊÇÒì³£´¦Àí£¬¶¼ÊÇΪÁËÒì³£·â×°¡¢°Ñ½á¹û·âװΪÌض¨µÄ¸ñʽ£¬ÀýÈçÒÔϸñʽ£º

{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": 1,
    "name": "username"
  }
}

ÕâÑùµÄÂß¼­Ã¿¸ö½Ó¿Ú¶¼ÐèÒª´¦ÀíÒ»±é£¬¶¼ÊÇ·±ËöµÄÖظ´ÀͶ¯¡£

ÏÖÔÚ£¬Ö»ÐèÒªÒýÈëGraceful Response×é¼þ²¢Í¨¹ý@EnableGracefulResponseÆôÓ㬾ͿÉÒÔÖ±½Ó·µ»ØÒµÎñ½á¹û²¢×Ô¶¯Íê³ÉresponseµÄ¸ñʽ·â×°¡£

ÒÔÏÂÊÇʹÓÃGraceful ResponseÖ®ºóµÄ´úÂ룬ʵÏÖͬÑùµÄ·µ»ØÖµ·â×°¡¢Òì³£´¦Àí¡¢Òì³£´íÎóÂ빦ÄÜ£¬µ«¿ÉÒÔ¿´µ½´úÂë±äµÃ·Ç³£¼ò½à£¬¿É¶ÁÐԷdz£Ç¿¡£

public class Controller {
    @GetMapping("/query")
    @ResponseBody
    public Data query(Parameter params) {
       return service.query(params);
    }
}

3. ¿ìËÙÈëÃÅ

3.1 ÒýÈëmavenÒÀÀµ

graceful-responseÒÑ·¢²¼ÖÁmavenÖÐÑë²Ö¿â£¬¿ÉÒÔÖ±½ÓÒýÈëµ½ÏîÄ¿ÖУ¬mavenÒÀÀµÈçÏ£º

<dependency>
    <groupId>com.feiniaojin</groupId>
    <artifactId>graceful-response</artifactId>
    <version>2.0</version>
</dependency>

3.2 ÔÚÆô¶¯ÀàÖÐÒýÈë@EnableGracefulResponse×¢½â

@EnableGracefulResponse
@SpringBootApplication
public class ExampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }
}

3.3 Controller·½·¨Ö±½Ó·µ»Ø½á¹û

? ÆÕͨµÄ²éѯ

@Controller
public class Controller {
    @RequestMapping("/get")
    @ResponseBody
    public UserInfoView get(Long id) {
        log.info("id={}", id);
        return UserInfoView.builder().id(id).name("name" + id).build();
    }
}

UserInfoViewµÄÔ´Â룺

@Data
@Builder
public class UserInfoView {
    private Long id;
    private String name;
}

Õâ¸ö½Ó¿ÚÖ±½Ó·µ»ØÁË UserInfoViewµÄʵÀý¶ÔÏ󣬵÷ÓýӿÚʱ£¬Graceful Response½«×Ô¶¯·âװΪÒÔϸñʽ£º

{
  "status": {
    "code": "0",
    "msg": "ok"
  },
  "payload": {
    "id": 1,
    "name": "name1"
  }
}

¿ÉÒÔ¿´µ½UserInfoView±»×Ô¶¯·â×°µ½payload×Ö¶ÎÖС£

Graceful ResponseÌṩÁËÁ½ÖÖ·ç¸ñµÄResponse£¬¿ÉÒÔͨ¹ýÔÚapplication.propertiesÎļþÖÐÅäÖÃgr.responseStyle=1£¬½«ÒÔÒÔϵĸñʽ½øÐзµ»Ø£º

{
  "code": "0",
  "msg": "o
Ê×Ò³ ÉÏÒ»Ò³ 1 2 3 4 ÏÂÒ»Ò³ βҳ 1/4/4
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºSpringMCV£¨°Ë£©£ºÎļþÉÏ´« ÏÂһƪ£ºSpringSecurity£ºOAuth2 Client ..

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿