jsonpath

从零搭建Spring Boot脚手架(2):增加通用的功能

狂风中的少年 提交于 2020-08-11 00:41:19
1. 前言 今天开始搭建我们的 kono Spring Boot 脚手架,首先会集成 Spring MVC 并进行定制化以满足日常开发的需要,我们先做一些刚性的需求定制,后续再补充细节。如果你看了本文有什么问题可以留言讨论。多多持续关注,共同学习,共同进步。 Gitee: https://gitee.com/felord/kono GitHub: https://github.com/NotFound403/kono 2. 统一返回体 在开发中统一返回数据非常重要。方便前端统一处理。通常设计为以下结构: { "code": 200, "data": { "name": "felord.cn", "age": 18 }, "msg": "", "identifier": "" } code 业务状态码,设计时应该区别于http状态码。 data 数据载体,用以装载返回给前端展现的数据。 msg 提示信息,用于前端调用后返回的提示信息,例如 “新增成功”、“删除失败”。 identifier 预留的标识位,作为一些业务的处理标识。 根据上面的一些定义,声明了一个统一返回体对象 RestBody<T> 并声明了一些静态方法来方便定义。 package cn.felord.kono.advice; import lombok.Data; import java.io

Python接口自动化测试框架: pytest+allure+jsonpath+requests+excel实现的接口自动化测试框架(已开源)

邮差的信 提交于 2020-08-10 08:49:08
目录 废话 功能 运行机制 已知问题 环境与依赖 目录结构 执行顺序 config.ymal展示 EXcel用例展示 脚本一览 运行结果 致谢 源码地址 废话 和几个朋友聊天然后出来的产物希望能帮到大家学习接口自动化测试,欢迎大家交流指出不合适的地方,源码在文末 功能 实现:get/post请求(上传文件)::理论上其他delete/put等请求也实现了 发送邮件 生成allure测试报告 压缩测试报告文件 数据依赖 运行机制 通过读取配置文件,获取到host地址、提取token的jsonpath表达式,提取实际响应结果用来与预期结果比对的jsonpath表达式。 读取excel用例文件数据,组成一个符合pytest参数化的用例数据,根据每列进行数据处理(token操作、数据依赖) token,写,需要使用一个正常登录的接口,并且接口中要返回token数据,才可以提取,token,读为该请求将携带有token的header,token 无数据的将不携带token 数据依赖处理,从excel中读取出来的格式{"用例编号":["jsonpath表达式1", "jsonpath表达式2"]},通过用例编号来获取对应case的实际响应结果(实际响应结果在发送请求后,回写到excel中),通过jsonpath表达式提取对应的依赖参数字段,以及对应的值

@JsonView注解的使用

◇◆丶佛笑我妖孽 提交于 2020-08-09 22:32:28
看到一个新的注解以前没有用过,记录一下使用方法。 注意是:com.fasterxml.jackson.annotation.JsonView @JsonView可以过滤pojo的属性,使Controller在返回json时候,pojo某些属性不返回,比如User的密码,一般是不返回的,就可以使用这个注解。 @JsonView使用方法:   1,使用 接口 来声明多个视图   2,在pojo的get方法上指定视图   3,在Controller方法上指定视图 例子:条件查询时候不返回用户的密码,查看详情时候返回用户的密码 User: package com.imooc.dto; import com.fasterxml.jackson.annotation.JsonView; public class User { public interface UserSimpleView {}; public interface UserDetailView extends UserSimpleView{}; // 继承 private String username; private String password; // UserSimpleView视图有 @JsonView(UserSimpleView. class ) public String getUsername() {

api接口返回动态的json格式?我太难了,尝试一下 linq to json

纵然是瞬间 提交于 2020-08-09 21:23:05
一:背景 1. 讲故事 前段时间和一家公司联调api接口的时候,发现一个奇葩的问题,它的api返回的json会动态改变,简化如下: {"Code":101,"Items":[{"OrderTitle":"订单1"}]} {"Code":102,"Items":[{"ProductTitle":"商品1"}]} 逻辑是这样的: Items 中的内容会随的 Code 的改变而改变,里面有可能是订单列表又有可能是商品列表,习惯弱类型的朋友看这种json太正常不过了,但对于强类型的我们来说,简直就是一个大写的奇葩,你这让我用什么强类型反序列化呢???,如果还没理解,请看下面的这张图吧! 经过沟通,对方果然用的是弱类型的php,磨了半天,说服让对方改了返回结构,这样就可以直接用固有类匹配。 二:寻找解决办法 从业务上来说,能说服对方让步那是最好的,但从技术上来说,这种场景有什么好的解决办法呢? 问题的本质就是json是动态的,你反序列化的时候无法指定匹配类。 1. 使用 dynamic 既然是动态的,那C#中也有一个动态类型 dynamic,何不用它来做json中动态变化的那部分的接受值,将 items 定义为 dynamic。如下图: 从图中看: rsp.Items as List<OrderItem> 返回是null,尝试失败,虽然转化失败了,但我相信你也看到了 Newtonsoft

@JsonView注解的使用

我的未来我决定 提交于 2020-08-08 23:29:39
看到一个新的注解以前没有用过,记录一下使用方法。 注意是:com.fasterxml.jackson.annotation.JsonView @JsonView可以过滤pojo的属性,使Controller在返回json时候,pojo某些属性不返回,比如User的密码,一般是不返回的,就可以使用这个注解。 @JsonView使用方法:   1,使用 接口 来声明多个视图   2,在pojo的get方法上指定视图   3,在Controller方法上指定视图 例子:条件查询时候不返回用户的密码,查看详情时候返回用户的密码 User: package com.imooc.dto; import com.fasterxml.jackson.annotation.JsonView; public class User { public interface UserSimpleView {}; public interface UserDetailView extends UserSimpleView{}; // 继承 private String username; private String password; // UserSimpleView视图有 @JsonView(UserSimpleView. class ) public String getUsername() {

Selecting a subset of JSON properties and values using JSONPath

南笙酒味 提交于 2020-08-07 20:00:44
问题 Given a JSON like: { "a":1, "b":2, "c":3, "d":4, "e":5 } How can I select out b , d and e to get the following JSON? { "b":2, "d":4, "e":5 } I want a JSON object and NOT only 2 , 4 and 5 values? This is what I'm trying with and failing: $.[b,d,e] 回答1: JSONPath is not suitable for what you are trying to achieve: JSONPath is designed to select values and not key-value pairs. What you want could be achieved with Jackson or any JSON parser for Java. If you want to go for Jackson here's the code

Selecting a subset of JSON properties and values using JSONPath

我怕爱的太早我们不能终老 提交于 2020-08-07 20:00:06
问题 Given a JSON like: { "a":1, "b":2, "c":3, "d":4, "e":5 } How can I select out b , d and e to get the following JSON? { "b":2, "d":4, "e":5 } I want a JSON object and NOT only 2 , 4 and 5 values? This is what I'm trying with and failing: $.[b,d,e] 回答1: JSONPath is not suitable for what you are trying to achieve: JSONPath is designed to select values and not key-value pairs. What you want could be achieved with Jackson or any JSON parser for Java. If you want to go for Jackson here's the code

使用Jupyter定制个性化python

两盒软妹~` 提交于 2020-08-04 12:41:47
现阶段python在人工智能及数据分析中得到了很多的实践成果。而python的编辑器也有很多种,如:pychram、N++、jupyter……其中jupyter以web的形式来进行编辑的工具。接下来讲下如何使用睿江云服务来部署jupyter这强大的工具。 一、环境配置 1.centeos7 2.python3 二、安装jupyter notebook 安装jupyter 安装Jupyter Notebook 通过pip安装Jupyter Notebook #安装jupyter notebook python3 -m pip install jupyter #安装完会在python3的包管理器,创建一个软连接以便在任何地方都可以直接执行 ln -s /usr/local/python3/bin/jupyter /usr/bin/jupyter 通过jupyter notebook命令启动Jupyter服务器,验证是否安装成功 [root@instance-hrnebyqu bin]# jupyter notebook --allow-root [I 11:26:22.273 NotebookApp] JupyterLab beta preview extension loaded from /root/anaconda3/lib/python3.6/site-packages

Python最简单的图片爬虫,20行代码带你爬遍整个网站

房东的猫 提交于 2020-07-28 06:08:03
前言 网络上的信息很多,有的时候我们需要关键字搜索才可以快速方便的找到我们需要的信息。今天我们实现搜索关键字爬取堆糖网上相关的美图,零基础学会通用爬虫,当然我们还可以实现多线程爬虫,加快爬虫爬取速度 环境: windows pycharm python3 导入模块 import urllib.parse import json import requests import jsonpath 确定目标网址 url = ' https://www.duitang.com/napi/blog/list/by_search/?kw={}&start={} ' 分析网站,确定爬取目标 label = ' 美女 ' label = urllib.parse.quote(label) 发送请求,提取数据 num = 0 for index in range(0,2400,24 ): u = url.format(label,index) we_data = requests.get(u).text 类型转换 html = json.loads(we_data) photo = jsonpath.jsonpath(html, " $..path " ) 保存数据 for i in photo: a = requests.get(i) with open(r ' C:\Users

Istio 1.6.3 发布-新特性与快速安装

北城以北 提交于 2020-07-28 01:47:13
Istio 1.6.3 发布了。Istio 是一个由谷歌、IBM 与 Lyft 共同开发的开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。具体来说,Istio 是一个开源服务网格平台,它确保微服务在处理故障时以指定的方式相互连接。 更新内容 修复了监视资源被删除后,操作员无法重新创建的问题 修复了Istio因消息崩溃的问题: proto.Message is *client.QuotaSpecBinding, not *client.QuotaSpecBinding 添加了对 k8s.v1.cni.cncf.io/networks 注释的支持 更新了 SidecarInjectionSpec 以从 .Values.global 读取 imagePullSecret 更新了水平分割以跳过解析主机名的网关 修复了 istioctl experimental metrics ,仅将错误响应代码标记为 erros 更新了 istioctl analyze 以对输出格式进行排序 更新了网关以使用 proxyMetadata 更新了 Prometheus Sidecar 以使用 proxyMetadata 启用 gateway.runAsRoot 时从 PodSecurityContext 中删除了无效的配置 升级更新 从已有版本升级,运行: istioctl