Java基础—实现微服务模块接收Http请求回调数据

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 本文中详细介绍在微服务模块中实现接收公网Http请求数据回调接口说明。

壹、涉及微服务结构相关的知识点

从零搭建微服务SpringCloud(二)新建一个SpringCloud项目

贰、实现代码

1、导入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.49</version>
</dependency>

2、resources目录创建application.yml文件

image.png

#自定义端口号
server:
  port: 7000
#自定义服务注册名
spring:
  application:
    name: HTTP-SERVICE

3、搭建启动类

image.png

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HttpServiceRequestStart {
    public static void main(String[] args) {
        SpringApplication.run(HttpServiceRequestStart.class,args);
    }
}

4、创建服务类

image.png

import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service
public class HttpServiceRequestService {
    private Logger logger = LoggerFactory.getLogger(HttpServiceRequestService.class);
    public void saveNotify(String reqBody){
        logger.info("reqBody="+reqBody);
        com.alibaba.fastjson.JSONObject resObj = JSONObject.parseObject(reqBody);
        System.out.println(resObj);
    }
}

5、搭建控制层

image.png

import com.cloud.start.com.service.HttpServiceRequestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStreamReader;

@RestController
@CrossOrigin
@RequestMapping(value = "/first", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class HttpServiceRequestController {
    @Autowired
    private HttpServiceRequestService httpServiceRequestService;
    @RequestMapping(value = "/request" ,method = RequestMethod.POST)
    public String one(HttpServletRequest result){
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(result.getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while((line = br.readLine())!=null){
                sb.append(line);
            }
            String reqBody = sb.toString();
            httpServiceRequestService.saveNotify(reqBody);
        }catch (Exception e){
            e.printStackTrace();
        }
        return "success";
    }
}

叁、参数详解

1、服务层详解

在服务层中,有代码为

com.alibaba.fastjson.JSONObject resObj = JSONObject.parseObject(reqBody);

我们进入JSONObject.parseObject(reqBody);的parseObject(String text)中看一下

image.png

如上图,第一行为Object obj = parse(text);
继续进入到parse方法

image.png

我们发现,parse方法是用来将String类型转为JSON类型

回到parseObject(String text)

如图,如果obj是JSONObject创建的对象,那么直接将obj强转为JSONObject对象并返回
image.png

如果不是JSONObject创建的对象,则将obj转为JSON后强转为JSONObject对象并返回,如果无法转换,则抛出新异常“can not cast to JSONObject”,无法转换为 JSON 对象。
image.png

2、控制层详解

@RequestMapping(value = "/first", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
MediaType参数介绍

目录
相关文章
|
2月前
|
缓存 Java
java开发常用模块——缓存模块
java开发常用模块——缓存模块
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(上)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
34 0
|
2月前
|
安全 Java API
Java一分钟之——Java模块系统:模块化开发(Jigsaw)
【5月更文挑战第20天】Java 9引入了Jigsaw模块系统,改善代码组织和依赖管理。模块通过`module-info.java`定义,声明名称、导出包及依赖。常见问题包括依赖循环、未声明依赖和过度导出。避免这些问题的策略包括明确声明依赖、谨慎导出包和避免循环依赖。通过实例展示了模块间的关系,强调理解模块系统对于构建整洁、安全和可维护的Java应用的重要性。
81 5
|
2月前
|
安全 Android开发
Android之OKHttp基本使用和OKHttp发送https请求安全认证
Android之OKHttp基本使用和OKHttp发送https请求安全认证
74 0
|
1月前
|
Web App开发 存储 网络安全
Charles抓包神器的使用,完美解决抓取HTTPS请求unknown问题
本文介绍了在 Mac 上使用的 HTTP 和 HTTPS 抓包工具 Charles 的配置方法。首先,强调了安装证书对于抓取 HTTPS 请求的重要性,涉及 PC 和手机端。在 PC 端,需通过 Charles 软件安装证书,然后在钥匙串访问中设置为始终信任。对于 iOS 设备,需设置 HTTP 代理,通过电脑上的 IP 和端口访问特定网址下载并安装证书,同时在设置中信任该证书。配置 Charles 包括设置代理端口和启用 SSL 代理。完成这些步骤后,即可开始抓包。文章还提及 Android 7.0 以上版本可能存在不信任用户添加 CA 证书的问题,但未提供解决办法。
146 0
Charles抓包神器的使用,完美解决抓取HTTPS请求unknown问题
|
1月前
|
监控 Java 关系型数据库
java版MES系统源码,后端采用 Spring Boot 多模块架构
MES系统采用Vue3的vue-element-plus-admin为后台,Spring Boot多模块架构,支持MySQL、Oracle等数据库,具备SaaS多租户功能。核心功能包括车间计划排程、工艺流程配置、生产质量管理、进度追踪、库存和排班管理等,全面覆盖生产运营关键环节。
java版MES系统源码,后端采用 Spring Boot 多模块架构
|
1月前
|
网络协议 前端开发 Java
网络原理 - HTTP / HTTPS(4)——构造http请求
网络原理 - HTTP / HTTPS(4)——构造http请求
18 1
|
1月前
|
存储 JSON 安全
网络原理 - HTTP / HTTPS(2)——http请求
网络原理 - HTTP / HTTPS(2)——http请求
26 1
|
1月前
|
JSON 安全 Java
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
29 0
|
1月前
|
前端开发 网络协议 JavaScript
网络原理 - HTTP / HTTPS(1)——http请求
网络原理 - HTTP / HTTPS(1)——http请求
18 0