テスト開発シリーズ - インターフェイスの送信機能(2、リクエスト&JSONリクエストを取得します)

いつものスタイルを休ま

  • 取得:アイテム/レモン/プロジェクト/ ToListメソッドのリストとして
  • 役職:
  • 置く:体が存在しなければなりません
  • 削除:レモン/プロジェクト/ 18 /として削除項目

露出制御層インターフェースhttpリクエスト。
ダボ要求サービスレイヤインタフェースが公開されています。

リクエストを取得

次のようにコードApiServiceImpl.java実行を修正する方法:

	@Override
	public ApiRunResult run(ApiVO apiRunVO){
		//远程调用
		//http用无参构造,https可以用有参构造
		RestTemplate restTemplate = new RestTemplate();
		String url = apiRunVO.getHost()+apiRunVO.getUrl();
		String method = apiRunVO.getMethod();
		List<ApiRequestParam> list = apiRunVO.getRequestParams();
		LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
		LinkedMultiValueMap<String, String> bodyParams = new LinkedMultiValueMap<String, String>();
		String paramStr = "?";
		for(ApiRequestParam apiRequestParam : list){
			if(apiRequestParam.getType()==3){ //头
				
				headers.add(apiRequestParam.getName(), apiRequestParam.getValue());
			}else if(apiRequestParam.getType()==1){
				paramStr += apiRequestParam.getName()+"="+apiRequestParam.getValue()+"&";
				
			}else{
				//body 2  4,注意此时type==1没有处理
				bodyParams.add(apiRequestParam.getName(), apiRequestParam.getValue());
			}
		}
		if(!"?".equals(paramStr)){
			paramStr = paramStr.substring(0,paramStr.lastIndexOf("&"));
		}
		System.out.println("1111"+paramStr);
		//System.out.println(headers+"\r\n"+bodyParams);
		HttpEntity httpEntity = null;
		ResponseEntity response = null;
		ApiRunResult apiRunResult = new ApiRunResult();
		try{
			if("get".equalsIgnoreCase(method)){
				//httpEntity = new HttpEntity(headers);
				httpEntity = new HttpEntity(bodyParams,headers);
				response = restTemplate.exchange(url+paramStr,HttpMethod.GET,httpEntity,String.class);
			}
			else if("post".equalsIgnoreCase(method)){
				httpEntity = new HttpEntity(bodyParams,headers);
				response = restTemplate.exchange(url,HttpMethod.POST,httpEntity,String.class);
			}
			apiRunResult.setStatusCode(response.getStatusCodeValue()+"");
			HttpHeaders headsResult = response.getHeaders();
			//将java转成json的字符串
			//第一种方法:jackson
			//apiRunResult.setHeaders(new ObjectMapper().writeValueAsString(headsResult));
			//第二种方法:fastjson
			apiRunResult.setHeaders(JSON.toJSONString(headsResult));
			apiRunResult.setBody(response.getBody().toString());
		}catch(HttpStatusCodeException e){
			//注意此时有调用异常,有body或没有
			apiRunResult.setStatusCode(e.getRawStatusCode()+"");
			apiRunResult.setHeaders(JSON.toJSONString(e.getResponseHeaders()));
			apiRunResult.setBody(e.getResponseBodyAsString());
		}

		return apiRunResult;
	}

インターフェイス呼び出し要求のgetレンダリングを送信

ここに画像を挿入説明
ここに画像を挿入説明

HTTP、HTTPSリクエストを送信するRestTemplate

分類を追加します。

:を参照してください使用して@RequestBody
オンにするfastjsonによって、役割JSON文字列の回転javaの。

次のコードでApiClassificationController.java増加:

	@PostMapping("/add2")
	public Result add2(@RequestBody String jsonStr){
		//String[] strArray = jsonStr.split(":");
		System.out.println(jsonStr);
		String value = jsonStr.substring(jsonStr.indexOf("[")+1,jsonStr.lastIndexOf("]"));
		System.out.println(value);
		//将jsonStr转成java对象
		ApiClassification apiClassification = JSON.parseObject(value, ApiClassification.class);
		System.out.println(apiClassification);
		apiClassificationService.save(apiClassification);
		return new Result("1","新增分类成功");
	}
公開された27元の記事 ウォンの賞賛1 ビュー1645

おすすめ

転載: blog.csdn.net/anniewhite/article/details/104873635