우체부 전송 요청 및 수신 배경

I. 서론

우체부 API 인터페이스 테스트 도구를 사용하는 경우, 어떻게 사용하는 json사용하는 대신, 그것의 값으로 문자열을 x-www-form-urlencoded함으로써, 결국, 유형을 key-value전통적 가치는 한계가있다. 내가 테스트하려는 경우 데이터가 삽입 대량 그것에 인터페이스 사용 x-www-form-urlencoded방법을 간단하게이 시나리오에서 적용되지 않습니다.

그래서, 여기에 스프링의 두 음 밖으로 발생 않습니다 우체부 도구에 의한 값으로 JSON 문자열을 사용하는 방법은 다음과 같습니다

  • @RequestParam

  • @RequestBody

모두 모두,이 두 가지 매개 변수는 백그라운드에서 메모를받을 수 있지만 같은 사용 시나리오 수 있습니다.

二, @ RequestParam

먼저 @RequestParam 사용 시나리오를 소개합니다 :

주석 @RequestParam 파라미터 수신 에 RequestHeader에서 , 즉, 요청 헤더 . 일반적으로 사용 요청 GET : 같은 일반적인 URL로, HTTP를 : // localhost를 : 8081 / 부팅 스프링 스터디 / 소설 / findByAuthorAndType 저자 = 당나라 세 개의 작은 및 유형 =있는, 종료 Controller도 다음 층이 작성 :

 

 

@RequestParam 세 가지 구성 매개 변수가 있습니다 :

  • required기본적으로 표시 여부를해야합니다 true, 당신은해야합니다.

  • defaultValue 기본 매개 변수는 요청에 제공 될 수있다.

  • value 파라미터 (키 값에 대응)를 수신하도록 URL 이름.

콘텐츠를 콘텐츠 형식을 처리하는 @RequestParam은 application / x-www-form-urlencode되고 인코딩이 부동산에 대한 컨텐츠 유형 기본값입니다.

@RequestParam 프로세스가 사용되기 때문에 Content-Type으로 application/x-www-form-urlencoded인코딩 콘텐츠 우편 배달 있도록 체형 선택하는 x-www-form-urlencoded자동 헤더가되도록,진다 Content-Type: application/x-www-form-urlencoded포맷을 인코딩하는 단계를 포함한다. 아래 그림과 같이 :

그러나 이것은 당신이 사용하는 경우 아, 데이터 삽입 지원 대량하지 않는 json값을 전달하는 문자열을, 유형이 설정은 application/json보내기를 클릭 한 다음, 배경 값을받을 수 없습니다 불평 것입니다 null.

이 때, 메모 @RequestBody 유용합니다. 아래로보고 계속 ↓

세 @ RequestBody

 

먼저 @RequestBody 사용 시나리오를 소개합니다 :

주석 @RequestBody 파라미터 수신 requestBody에서 , 즉, 요청 체 . 일반적으로 비 처리 Content-Type: application/x-www-form-urlencoded: 다음과 같은 형식으로 부호화 데이터 application/json, application/xml그리고 다른 유형의 데이터.

application/json데이터의 유형, 당신은 백 엔드에 모든 JSON 데이터 내에서 백 엔드 주석 @RequestBody 바디를 사용하고 분석 할 수 있습니다.

 

테이블에 데이터를 삽입 3.1 벌크

예를 들어, 데이터의 배치가 삽입되면, 컨트롤러 표현 층 아래에 ​​도시된다 :

@RequestBody에 사용될 수있는 프로세스 이후 Content-Typeapplication/json암호화 콘텐츠, 우편 배달 있도록 체형이 선택 row-> JSON(application/json), 그래서 Headers자동으로된다 Content-Type: application/json인코딩 형식. 아래와 같이 본문 데이터 :

批量向表中插入两条数据,这里的 saveBatchNovel()方法已经封装了 JPAsaveAll() 方法。body 里面的 json 语句的 key 值要与后端实体类的属性一一对应。

注意:前端使用$.ajax的话,一定要指定 contentType: "application/json;charset=utf-8;",默认为 application/x-www-form-urlencoded

3.2 后端解析json数据

上述示例是传递到实体类中的具体写法,那么如果传递到非实体类中,body里面的json数据需要怎么解析呢?我们再来看下面这个例子:

在body中,我们还是输入上面的json数据,根据分析,上面的json数据是一个List数组内嵌套着map对象,那么在后台的接收形式可写为 List<Map<String, String>>,具体代码如下图所示:

postman请求:

控制台输出:

得出结论,通过@RequestBody可以解析Body中json格式的数据。

 

四、总结

注解@RequestParam接收的参数是来自requestHeader中,即请求头通常用于GET请求,像POST、DELETE等其它类型的请求也可以使用。

注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/jsonapplication/xml等类型的数据。通常用于接收POST、DELETE等类型的请求数据,GET类型也可以适用。

@requestBody一般是将多个参数封装为一个对象时使用。访问方式为application/json 一般为post

@requestParam实例: 访问方式可为form表单 一般为get

public AjaxResult getCouponCode(    @RequestParam(name = "userId", required = false, defaultValue = "-1") long userId)

当接口请求是application/JSON时,直接发Json.toJSONString(对象)

public RebateRuleDTO queryRebateRule(GetRebateRule rebateRule) {   
    return getObject(URLRebateConstant.URL_QUERY_REBATE_RULE, JSON.toJSONString(rebateRule),    
             RebateRuleDTO.class, "queryRebateRule");

 

 

 

추천

출처www.cnblogs.com/lvhouhou/p/11973762.html