url 传参 http 2021-08-07

这篇博客探讨了在项目中使用URL参数和路径变量两种不同的方式传递和接收数据。通过示例展示了如何在Thymeleaf模板中创建链接,并且解释了这两种方式在实际应用中的地址表现和控制器注解的差异。对于开发者来说,理解这些概念对于构建RESTful API至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记

@{/emp(id=${emp.id})}   /emp?id=1  url ?方式
@{/emp/}+${emp.id}     /emp/1   url传参 变量  
<a href="#" class="btn btn-primary" th:href=" @{/emp(id=${emp.id})}">编辑</a>

项目 访问后地址  http://localhost:8883/emp?id=1
          
<a href="#" class="btn btn-primary" th:href="   @{/emp/}+${emp.id} ">编辑</a>

 项目  访问后地址     http://localhost:8883/emp/1
控制层注解描述 @GetMapping("/emp/{id}")
不同的拼接方式,接收方式也不同。
### Java 文件上传接口传参及 Content-Type 设置 对于文件上传操作,在Java Web开发中通常会涉及到`MultipartFile`对象来处理文件流。当构建用于接收文件和其他表单字段的API时,确保正确配置HTTP请求头中的`Content-Type`至关重要。 #### 接口定义 在Spring框架下创建一个能够接受图片(如JPEG)以及其他JSON格式数据的控制器方法如下所示: ```java import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @RestController @RequestMapping("/api/upload") public class UploadController { @PostMapping(consumes = {"multipart/form-data"}) public ResponseEntity<String> uploadFile( @RequestParam("file") MultipartFile file, @RequestParam("data") String jsonData) { // 处理接收到的数据... System.out.println(jsonData); try { byte[] bytes = file.getBytes(); // 进一步处理文件... return new ResponseEntity<>("Success", HttpStatus.OK); } catch (IOException e) { return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } } } ``` 此代码片段展示了如何通过`@RequestParam`获取名为`file`的文件输入项,并将其作为`MultipartFile`实例读取;同时也支持额外的字符串参数`jsonData`表示其他形式的内容,比如JSON串[^3]。 #### 客户端发送POST请求 为了向上述服务端点发起带有适当头部信息(`Content-Type`)的请求,可以利用Apache HttpClient库或其他类似的工具包实现客户端逻辑。下面是一个简单的例子说明怎样构造这样的请求体并指定正确的媒体类型: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost postRequest = new HttpPost("http://localhost:8080/api/upload"); // 创建 multipart entity builder 并添加部分 MultipartEntityBuilder builder = MultipartEntityBuilder.create() .addBinaryBody("file", new File("path/to/image.jpg"), ContentType.APPLICATION_OCTET_STREAM, "image.jpg") .addTextBody("data", "{\"key\":\"value\"}", ContentType.APPLICATION_JSON); HttpEntity multiPartEntity = builder.build(); postRequest.setEntity(multiPartEntity); try (CloseableHttpResponse response = httpClient.execute(postRequest)) { int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 200) { System.out.println(EntityUtils.toString(response.getEntity())); } else { throw new RuntimeException("Failed with HTTP error code : " + statusCode); } } finally { httpClient.close(); } ``` 这段程序首先设置了目标URL地址,接着使用`MultipartEntityBuilder`组装了一个包含两个不同类型的部件——一个是二进制图像文件,另一个则是纯文本(JSON),最后执行该请求并将响应结果打印出来[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值