`

restful RequestMapping POST\PUT 示例&要点

阅读更多
@RequestMapping(value = "/xxx/xxxxxx", method = RequestMethod.POST)
public Response fun1(HttpServletRequest request, 
			@PathVariable("paraA") String a, 
			@RequestParam("ParaB") String b, 
			@RequestParam("ParaC") String c ) {
		
		//code here
		
		return response;
}	

@RequestMapping(value = "/xxx/yyyyyyy", method = RequestMethod.PUT)
public Response fun2(HttpServletRequest request, 
			@PathVariable("paraA") String a, 
			@RequestParam("ParaB") String b, 
			@RequestParam("ParaC") String c ) {

		//code here
		
		return response;
	}

 

要点:

@RequestParam 

A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;

B)用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;

C) 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

 

*如果是json,则要以下写法:

@RequestMapping(value = "/api/xxxx/{param}", method = { RequestMethod.PUT })
public Response fun3(
			@PathVariable(value = "param") String param,
			HttpServletRequest request) {
		logger.info("============= API start ==================");
		//code service here

		logger.info("=============  API end ==================");
		return response;
	}

 要用上HttpServletRequest,然后在service层,调用

JSONObject json = ParametersUtil.getRequestBodyWithJson(param,request);

 ParametersUtil:

public class ParametersUtil {

	private static final Logger logger = LoggerFactory
			.getLogger(ParametersUtil.class);

	public static JSONObject getRequestBodyWithJson(String parameter,
			HttpServletRequest request) {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(
					request.getInputStream()));
			String line = null;
			StringBuilder sb = new StringBuilder();
			while ((line = br.readLine()) != null) {
				sb.append(line);
			}
			logger.info("Request Body:" + sb.toString());

			String reqBody = URLDecoder.decode(sb.toString(), "UTF-8");
			JSONObject json = new JSONObject(reqBody);

			logger.info(
					"[getRequestBodyWithJson][{}]-- get request body with json successfully",
					parameter);
			return json;
		} catch (Exception e) {
			logger.error(
					"[getRequestBodyWithJson][{}]-- get request body with json fail, exception is [{}]",
					parameter, e.getMessage());
			return null;
		}

	}

	public static JSONArray getJsonArray(JSONObject jsonObject, String key) {
		try {
			if (jsonObject == null) {
				return null;
			} else {
				return jsonObject.getJSONArray(key);
			}
		} catch (Exception e) {
			return null;
		}
	}

	public static String covertJSONArray2String(JSONArray jsonArray) {
		if (jsonArray == null || jsonArray.length() == 0) {
			return null;
		}
		List<String> list = new ArrayList<String>();
		for (int i = 0; i < jsonArray.length(); i++) {
			String s = (String) jsonArray.get(i);
			if (s != null && !s.isEmpty()) {
				list.add(s.trim());
			}
		}
		if (list.isEmpty()) {
			return null;
		} else {
			return list.toString().replace("[", "").replace("]", "")
					.replace(" ", "");
		}
	}

	public static String getJsonValue(JSONObject jsonObject, String key) {
		try {
			if (jsonObject == null) {
				return null;
			} else {
				return jsonObject.getString(key);
			}
		} catch (Exception e) {
			return null;
		}
	}

	public static JSONObject getJsonObject(JSONObject jsonObject, String key) {
		try {
			if (jsonObject == null) {
				return null;
			} else {
				return jsonObject.getJSONObject(key);
			}
		} catch (Exception e) {
			return null;
		}
	}
}

 

分享到:
评论

相关推荐

    restful接口示例代码

    以下是一个基于Java Spring Boot框架实现RESTful接口的示例代码: ```java import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @...

    spring boot restful 接口示例项目

    RESTful API 通常通过 HTTP 协议提供服务,利用 GET、POST、PUT、DELETE 等方法操作资源,实现客户端与服务器的通信。 1. **Maven**:项目管理工具,用于依赖管理和构建。在本项目中,`pom.xml` 文件定义了项目依赖...

    spring-boot-web-restfulcrud代码示例

    总结起来,"spring-boot-web-restfulcrud" 示例项目展示了如何利用 Spring Boot 和 Spring MVC 实现一个基于 RESTful 的 CRUD 应用。这涵盖了从项目的初始化、Controller 的编写、服务层的设计到与数据库的交互等多...

    SpringMVC RESTFUL风格

    2. **动词与资源结合**:通常使用HTTP方法(如GET、POST、PUT、DELETE)来表达对资源的操作,而URL本身主要负责定位资源。 3. **简洁性**:相较于传统的非RESTFUL风格URL,RESTFUL风格的URL更简洁、易于理解和维护。...

    restful2个例子

    在本文中,我们将深入探讨RESTful架构风格的两个实际应用示例,它们分别是基于Apache CXF实现的`cxf_demo`和基于Spring框架的`Spring_Restful_Demo`。 首先,让我们了解RESTful的基本原则: 1. **资源(Resources...

    Spring MVC之@RequestMapping详解

    本文将深入探讨@RequestMapping的使用方式,以及其在处理RESTful API时如何与各种参数绑定注解(@RequestParam、@RequestBody、@RequestHeader、@PathVariable)配合工作,并简要提及HttpMessageConverter的概念。...

    RestfulApi服务端.zip

    RestfulApi服务端是现代Web应用开发中常用的一种设计风格,它基于HTTP协议,通过不同的HTTP方法(GET、POST、PUT、DELETE等)来实现资源的获取、创建、更新和删除操作,使得API接口更加清晰、简洁且易于理解。...

    restful-crud-实验.tar.gz

    在压缩包"restful-crud-实验"中,可能包含了示例代码、README文档、数据库脚本等资源,学习者可以通过阅读和运行这些代码,来实践上述概念并加深理解。通过这个实验,不仅可以掌握RESTful API的设计原则,还能熟悉...

    Springmvc中 RequestMapping 属性用法归纳.docx

    在Spring MVC框架中,`@...通过灵活地配置`@RequestMapping`的属性,开发者可以构建出高度可扩展和可维护的RESTful API,满足各种复杂的请求处理需求。了解并熟练掌握这些用法对于编写高效的Spring MVC应用至关重要。

    Restful WebService

    - **@GetMapping、@PostMapping、@PutMapping、@DeleteMapping**:这些是@RequestMapping的简化版本,分别对应GET、POST、PUT、DELETE操作。 4. **实例分析:ConsumeRESTful和SpringRestTest** - **...

    springMVC搭建Restful服务

    4. **处理模型和视图**:在上述示例中,我们使用了@RestController注解,这意味着控制器方法的返回值会直接转换为JSON或其他格式的响应。如果需要更复杂的视图处理,可以使用ModelAndView对象。 5. **运行和测试**...

    一个简单的Restful例子以及讲解

    RESTful设计提倡使用HTTP方法本身来表达操作意图,如GET用于检索信息,POST用于创建新资源,PUT用于更新现有资源,DELETE用于删除资源等。 ##### 示例对比 非RESTful风格的例子: - `...

    RESTful架构总结

    `spring-rest-example`可能是一个使用Spring Boot和Spring MVC构建的示例项目,它展示了如何配置RESTful端点。`spring-rest-example-model`可能包含了项目的模型类,定义了资源的数据结构。 在`spring-rest-example...

    spring 3.x 中Restful风格服务开发 demo

    RESTful服务的核心在于使用HTTP方法(GET、POST、PUT、DELETE等)来操作资源。在Spring 3.x中,我们主要依赖`@Controller`、`@RequestMapping`以及`@ResponseBody`等注解来构建这些服务。 首先,我们需要一个...

    Springboot_restful_api

    其主要原则包括使用HTTP方法(如GET、POST、PUT、DELETE)来表示不同的操作,以及通过URI(Uniform Resource Identifier)来标识资源。SpringBoot结合RESTful原则,可以方便地创建高效、可测试的API。 在SpringBoot...

    spring加载restful(文档+程序源码)

     创建一个示例RESTful Web Service  本节中的例子将演示Spring 3环境的创建过程,并创建一个可以部署到Tomcat中的“Hello World”应用。然后我们再完成一个更复杂的应用来了解Spring 3 REST支持的重要概念,如...

    Spring restful Json

    以下是一个简单的Spring RESTful JSON服务示例,展示如何保存一个对象: ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; ...

    SpringBoot_Restful

    SpringBoot_Restful是利用Spring Boot框架构建的一个基于RESTful架构的应用示例。Spring Boot以其快速、简洁的特性,已经成为Java开发领域中的热门选择,尤其在微服务领域中广泛使用。RESTful架构是一种轻量级的Web...

    restful结合spring实例,带有两个例子

    RESTful设计的核心是将业务逻辑拆分为独立的资源,并通过HTTP方法(GET、POST、PUT、DELETE等)来操作这些资源。这种方式使得API清晰、简洁且易于理解和维护。 Spring MVC是Spring框架的一部分,专门用于构建Web...

    RESTful Web Service Demo

    RESTful Web Service是一种基于HTTP协议,以资源为中心的Web服务设计风格。这种风格强调通过统一接口,使用HTTP方法(GET、POST、PUT...通过学习和实践这个示例,开发者可以更好地理解和掌握RESTful服务的设计与实现。

Global site tag (gtag.js) - Google Analytics