当前位置: 首页 > news >正文

竞价网站做seo如何做好网络推广工作

竞价网站做seo,如何做好网络推广工作,wordpress 调用输入,辽阳哪里做网站在些模块中汇总了一些web开发常用的配置和功能。 模块源码结构 Restful API常用定义 QueryParam请求参数 Data public class QueryParam {private String key;private String value; }RestfulController实现 RestfulController.java,主要汇总一些常用的restful的…

在些模块中汇总了一些web开发常用的配置和功能。

模块源码结构

在这里插入图片描述

Restful API常用定义

QueryParam请求参数

@Data
public class QueryParam {private String key;private String value;
}

RestfulController实现

RestfulController.java,主要汇总一些常用的restful的写法

@Slf4j
@RestController
@RequestMapping("/api/load")
public class RestfulController {/*默认 required = true*/@GetMapping("/v1/getMapping")public BaseResponse<String> getMapping( @RequestParam(value="username", required = false)  String name){log.info("getMapping:{}", name);return BaseResponse.success(name);}/*这处必须用 @PathVariable 注解*/@GetMapping("/v1/pathVariable/{name}")public BaseResponse pathVariable(@PathVariable("name") String name){log.info("getMapping:{}", name);return BaseResponse.success(name);}/*默认 required = true*/@PostMapping(value = "/v1/postMapping")public BaseResponse postMapping(@RequestBody QueryParam queryParam){log.info("getMapping:{}", queryParam);return BaseResponse.success(queryParam);}@RequestMapping(value = "/v1/allRequestMapping/{name}")public BaseResponse allRequestMapping(@PathVariable("name") String name){log.info("getMapping:{}", name);return BaseResponse.success(name);}
}

RestTemplate客户端

pom.xml

        <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.14</version></dependency><dependency><groupId>org.apache.httpcomponents.client5</groupId><artifactId>httpclient5</artifactId><version>5.2.3</version></dependency>

RestTemplate Bean实现

配置java-ben

@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate() {RestTemplate restTemplate = new RestTemplate();restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));return restTemplate;}
}

application.properties配置

spring.profiles.active = dev
spring.application.name=springbootCommonConfig
server.port=17000#自定义配置服务端
service-url.service = http://www.baidu.com

调用http接口

定义一个Controller来测试Rest调用

@Slf4j
@RestController
@RequestMapping("/api/rmihttp")
public class TemplateController {@Autowiredprivate RestTemplate restTemplate;@Value("${service-url.service}")private String serviceUrl;@GetMapping("/v1/hello-content")public BaseResponse<String> loadHelloContent(String uuid){String result =  restTemplate.getForObject(serviceUrl + "/s?wd=springboot", String.class, uuid);return BaseResponse.success(result);}}

RestTemplate实现GET调用

//getForObject: 返回对象为响应体中数据转化成的对象
@GetMapping("/{id}")
public Result getUser(@PathVariable Long id) {return restTemplate.getForObject(userServiceUrl + "/user/{1}", Result.class, id);
}//getForEntity: 返回对象为ResponseEntity对象,包含了响应中的一些重要信息,比如响应头、响应状态码、响应体等,举例如下:
@GetMapping("/getEntityByUsername")
public Result getEntityByUsername(@RequestParam String username) {ResponseEntity<Result> entity = restTemplate.getForEntity(userServiceUrl +"/user/getByUsername?username={1}", Result.class, username);if (entity.getStatusCode().is2xxSuccessful()) {return entity.getBody();} else {return new Result("操作失败", 500);}
}

RestTemplate实现POST调用

// postForObject
@PostMapping("/insert")
public Result insert(@RequestBody User user) {return restTemplate.postForObject(userServiceUrl + "/user/insert", user, Result.class);
}//postForEntity
@PostMapping("/insert")
public Result insert(@RequestBody User user) {return restTemplate.postForEntity(userServiceUrl + "/user/insert", user, Result.class).getBody();
}

Swagger-UI测试Restful API

application-dev.properties配置

以下全是自定义的属性,需要有一个相应的配置类,如下:

#swagger
springdoc.api-docs.enabled=true
springdoc.api-docs.path=/api-schemaswagger-config.group = default-group
swagger-config.description= The following is a restful-api list of {} application, and you can browse or test them to determine if they are working as you expect.
swagger-config.version=V1.0
swagger-config.urlPattern=/**
swagger-config.base-package=com.korgs
swagger-config.authorization-key-name=token
swagger-config.wiki = https://korgs.blog.csdn.net/

关键配置只有swagger-config.base-packageswagger-config.urlPattern,开发时最常修改的是swagger-config.base-package用来扫描API类。如果想关闭swagger功能,可以设置springdoc.api-docs.enabled=false

OpenAPIConfig Bean实现

在OpenAPIConfig类中包含了一个内部类SwaggerProperties,SwaggerProperties和上述application-dev.properties中相应的配置相对应。

@Configuration
public class OpenAPIConfig {@Autowiredprivate SwaggerProperties swaggerProperties;@Value("${spring.application.name}")private String applicationName;@Beanpublic OpenAPI openAPI() {return new OpenAPI().info(new Info().title(applicationName).description(StrUtil.format(swaggerProperties.getDescription(), applicationName)).version(swaggerProperties.getVersion())).externalDocs(new ExternalDocumentation().description("See details documentation, please click here!").url(swaggerProperties.getWiki()));}@Beanpublic GroupedOpenApi applicationRestfulApi() {return GroupedOpenApi.builder().group(swaggerProperties.getGroup()).packagesToScan(swaggerProperties.getBasePackage().split(",")).pathsToMatch(swaggerProperties.getUrlPattern()).build();}@Data@Component@ConfigurationProperties(prefix = "swagger-config")public static class SwaggerProperties{private String group;private String description;private String version;private String basePackage;private String authorizationKeyName;private String urlPattern;private String wiki;}
}

Log4j配置实现

定义一个名为log4j2.xml的文件,并在application.properties中做如下配置

# log4j
logging.config=classpath:log4j2.xml
logging.level.root=INFO
logging.level.org.springframework.web=ERROR

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?><!--scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true-->
<configuration scan="false"><!--日志文件存储路径,默认为项目根目录下,默认值为logs--><property name="LOG_PATH" value="logs"/><!-- 定义日志文件名称 --><property name="appName" value="springbootBase"></property><!--控制台日志格式定义--><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss}  [%thread] [%level] [%c] %M %L - %msg%n</pattern></encoder></appender><!--所有日志--><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/${appName}.info.log</file><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss}  [%thread] [%level] [%c] %M %L - %msg%n</pattern></encoder><!--按天存档日志,最多存储30天--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${LOG_PATH}/${appName}.info.%d{yyyy-MM-dd}.log.gz</FileNamePattern><MaxHistory>30</MaxHistory></rollingPolicy></appender><!--error日志--><appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><file>${LOG_PATH}/${appName}.err.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${appName}.err.%d{yyyy-MM-dd}.log.gz</fileNamePattern><maxHistory>30</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss}  [%thread] [%level] [%c] %M %L - %msg%n</pattern></encoder></appender><!--设置哪些日志会生效--><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="FILE" /><appender-ref ref="ERROR" /></root>
</configuration><!--1   %d{yyyy-MM-dd HH:mm:ss, SSS}	日志产生时间,输出到毫秒的时间-->
<!--2	%level	输出日志级别-->
<!--3	%logger 或 %c	logger 的名称,通常为包名+类名-->
<!--4	%thread 或 %t	输出当前线程名称-->
<!--5	%p	日志输出格式-->
<!--6	%message 或 %msg 或 %m	日志内容,即 http://logger.info("message")-->
<!--7	%n	换行符-->
<!--8	%class 或 %C	输出 Java 类名-->
<!--9	%file 或 %F	输出文件名-->
<!--10	%L	输出错误行号-->
<!--11	%method 或 %M	输出方法名-->
<!--12	%l	输出语句所在的行数, 包括类名、方法名、文件名、行数-->
<!--13	hostName	本地机器名-->
<!--14	hostAddress	本地 ip 地址-->

线程跟踪日志

这个日志跟踪功能只能在本应用中适用,如果想在分布式环境中需要更高级的设计或是采用类似ELK之间的中间件。不过这个跟踪功能在分析问题时也非常有用。其输出格式如下:

2024-05-07 23:54:22  [http-nio-18081-exec-8] [INFO] [com.korgs.framework.logger.AccessLogInterceptor] accessLog 119 - tid=179864225215371860 appId=noSet ip=0:0:0:0:0:0:0:1 uri=/helloworld method=com.korgs.SpringbootWebApplication.helloWorld param={} inTime=1715097262676 
2024-05-07 23:54:22  [http-nio-18081-exec-8] [INFO] [com.korgs.SpringbootWebApplication] helloWorld 28 - tid=179864225215371860 msg=I am busy to handle this request.
2024-05-07 23:54:22  [http-nio-18081-exec-8] [INFO] [com.korgs.framework.logger.AccessLogInterceptor] accessLog 119 - tid=179864225215371860 uri=/helloworld exec=14
  • tid:随机生成的事务ID,每次请求唯一,并在同一线程内有效;
  • inTime:表示接收请求的时间
  • exec:表示当前请法响应的总时间
  • appId:表示调用的客户端标识
  • ip:表示调用的客户端IP
  • uri:表示客户端调用的API
  • method:表示客户端调用的API实现的java方法

源码下载

涉及模块:

  • springboot-common-config:17000

源码下载:

  • 基础框架源码下载
  • 封装Springboot基础框架功能-03

源码运行方法:

  • 模块详细功能说明和运行测试方法
http://www.khdw.cn/news/22306.html

相关文章:

  • 手机网站建设推广方案ppt模板免费企业网站建设流程
  • 互联网网站开发合同教育培训机构平台
  • 无锡网站制作哪家好网络营销主要做些什么
  • 品牌建设营销佛山外贸seo
  • 企业网站如何做seo搜什么关键词比较刺激
  • dwcs5怎么做动态网站网站推广服务
  • 做影视网站能赚到钱吗宁波网络营销公司
  • 大型网站建设方案抖音搜索seo软件
  • 微商软件东莞seo网站排名优化公司
  • 衡阳做网站公司那个推广平台好用
  • 怎么做时时彩网站平台怎么提成自助建站平台源码
  • 福州网站建设服务价格最实惠seo搜索排名优化
  • 资源网盘链接承德seo
  • 网络营销的职能是什么?seo如何提高排名
  • 推销别人做网站有什么作用想学编程去哪里找培训班
  • 假网站是怎么做的seo代码优化包括哪些
  • 做视频网站许可证适合网络营销的产品
  • 什么是cms网站系统sem管理工具
  • 公司注册公司代理网站优化seo是什么
  • 北京高端网站制作长沙百度网站推广公司
  • 最新网站网址永久发布惠州百度关键词优化
  • 珠海门户网站建设价格广州网站优化多少钱
  • 酷酷123网址之家宁波seo快速优化公司
  • 北京市建设工程质监站网站关键字优化用什么系统
  • web网站开发的书籍新闻头条最新消息10条
  • 包头建设局网站百度贴吧网页入口
  • 番禺做网站网站技术外包公司
  • crm系统管理淘宝seo推广优化
  • 聊城seo整站优化报价深圳推广公司介绍
  • 装修公司网站用的织梦淘宝流量平台