# noark-http-demo **Repository Path**: xiaoe/noark-http-demo ## Basic Information - **Project Name**: noark-http-demo - **Description**: 使用Noark起一个只有HTTP功能的示例 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-10-30 - **Last Updated**: 2021-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # noark-http-demo #### 介绍 使用Noark起一个只有HTTP功能的示例 ### 无参示例 ```java @ResponseBody @GetMapping(path = "/") public String index() { return "welcome to noark http service..."; } ``` 访问:http://127.0.0.1:8080/ 响应: ```text welcome to noark http service... ``` ### 常规参数示例 ```java @ResponseBody @GetMapping(path = "/hello.php") public String hello(@RequestParam(name = "name") String name, @RequestParam(name = "age", required = false, defaultValue = "18") int age) { return "hello " + name + ", age=" + age; } ``` 访问:http://127.0.0.1:8080/hello.php?name=dada 响应: ```text hello dada, age=18 ``` 访问:http://127.0.0.1:8080/hello.php?name=dada&age=123 响应: ```text hello dada, age=123 ``` ### 注入request对象示例 ```java @ResponseBody @GetMapping(path = "/hello.aspx") public String hello(HttpServletRequest request){ StringBuilder sb=new StringBuilder(); sb.append("URI:\t\t").append(request.getUri()).append("\n"); sb.append("method:\t\t").append(request.getMethod()).append("\n"); sb.append("IP:\t\t").append(request.getRemoteAddr()).append("\n"); sb.append("parameter----------").append("\n"); Enumeration names=request.getParameterNames(); while(names.hasMoreElements()){ String key=names.nextElement(); sb.append(key).append("\t\t").append(request.getParameter(key)).append("\n"); } } ``` 访问:http://127.0.0.1:8080/hello.aspx?a=1&b=2&c=&ddd 响应: ```text URI: /hello.aspx method: GET IP: 127.0.0.1 parameter---------- a 1 b 2 c ddd ``` ### 注入对象示例 ```java @ResponseBody @GetMapping(path = "/hello.jsp") public String hello(@RequestParam(name = "item") SimpleItem item) { return "code=" + item.getCode() + ",num=" + item.getNum(); } ``` 这里的SimpleItem为自定义对象,需要为他编写转化器,其实就是写个切割字符串后new个新对象并赋值 ```java @TemplateConverter(SimpleItem.class) public class SimpleItemConverter extends AbstractConverter { @Override public String buildErrorMsg() { return "格式不对噢...例>>道具编号:数量"; } @Override protected SimpleItem convert(String value) throws Exception { String[] array = value.split(":", 2); return new SimpleItem(array[0], Integer.parseInt(array[1])); } } ``` 访问: http://127.0.0.1:8080/hello.jsp?item=qianghuashi:100 响应: ```text code=qianghuashi,num=100 ``` 如果参数是JSON格式的,请看下面的示例 ### POST请求JSON格式的参数示例 ```java @ResponseBody @PostMapping(path = "/hello.do") public String postJson(@RequestParam(name = "code") String code, @RequestParam(name = "num") int num) { return "code=" + code + ", num=" + num; } ``` 请求 ```java HashMap requestProperty = MapUtils.of("Content-Type", "application/json"); String result = HttpUtils.post("http://127.0.0.1:8080/hello.do", JSON.toJSONString(new SimpleItem("XXX", 123)), requestProperty); System.out.println(result); ``` 响应 code=XXX, num=123 这里的头部参数 "Content-Type", "application/json" 这个很重要,是要通知服务器,我使用的是什么格式 ### 最后一种常用的方案,POST的内容是一个JSON ```java @ResponseBody @PostMapping(path = "/hello.action") public String postContent(@RequestBody String jwtToken) { return "jwtToken=" + jwtToken; } ``` 请求 ```java // 这里要注意,请求方的content-type没有才可以使用此方法 HashMap requestProperty = MapUtils.of("Content-Type", ""); String result = HttpUtils.post("http://127.0.0.1:8080/hello.action", JSON.toJSONString(new SimpleItem("XXX", 123)), requestProperty); System.out.println(result); ``` 响应 ```text jwtToken={"code":"XXX","num":123} ``` 最后这个注解需要版本是3.4.4.Final以上噢~~~~