API 功能
允许您按类别、关键字或这两者的组合搜索 Trade Me 上的列表。
结果集可以通过各种属性进行过滤,包括“立即购买”、“立即付款”、“商品状况”或“卖家”的可用性。
API - 常规搜索脚本开发步骤
API规范->业务展示->API测试脚本调试->API测试脚本增强->API测试脚本反向案例扩展->API测试脚本发布
API规范
-
关键请求字段
page | Integer (optional) | 要返回的结果集的页码,从 1 开始。默认为 1。 |
… | … | … |
rows | Integer (optional) | 每页结果数;也是要返回的最大结果数。对于未经身份验证的请求,最大值为 25,对于经过身份验证的请求,最大值为 500。默认为 25(未认证)或 50(已认证)。 |
… | … | … |
更多参考:常规搜索
-
关键响应字段
TotalCount | Integer | 集合中的结果总数。可以大于返回结果的数量。 | |
TotalCountTruncated | Boolean | 如果结果总数超过允许的最大值并被截断,则为真。 | |
Page | Integer | 当前结果页的索引(从 1 开始)。 | |
PageSize | Integer | 当前页面中的结果数。 | |
List | Collection of or null | 当前页面中的结果列表。 | |
ListingId | Long Integer | 商家信息的 ID。 | |
BuyNowPrice | Number | 立即购买价格。 | |
HasBuyNow | Boolean | 指示该项目是否有立即购买。 | |
… | … | … | … |
更多参考:常规搜索
-
示例请求
GET https://api.tmsandbox.co.nz/v1/Search/General.JSON?buy=All&rows=500&page=4
-
示例响应
{
"TotalCount": 16479,
"Page": 4,
"PageSize": 500,
"List": [
...
{
"ListingId": 2149294614,
"Title": "Cobra Glassware",
"Category": "0341-0881-4739-",
"StartPrice": 11.0000,
"BuyNowPrice": 33.0000,
...
"HasBuyNow": true,
...
},
...
]
}
业务介绍
-
前端页面 - 搜索框勾选“立即购买”以过滤具有“立即购买”功能的项目。
登录 > 搜索一个种类
-
业务范围选择
链式投资组合交易
检索您赢得的物品 ->从您赢得的物品列表中删除购买 ->常规搜索(我在这里) ->检索单个列表的详细信息 ->使用“立即购买”购买拍卖
通过搜索功能搜索 500 件商品,并仅从下游交易“检索单个列表的详细信息”的响应中选择具有“HasBuyNow”功能和 BuyNowPrice <= $20 的商品以供使用。
-
业务验证点
检查给定的搜索条件可以获得项目,这些项目中的一个随机项目可以存储供下游事务’RetrieveTheDetailsOfASingleListing’使用。
API测试脚本调试
-
在 Postman 的 Authorization 标签中选择 OAuth 1.0 对请求进行授权。
OAuth 1.0 是针对发送前需要授权的交易。模板如下:
如何获取Consumer Key、Consumer Secret、OAuth Token、OAuth Token Secret,请参考**API测试前的准备demo **
-
组装请求 - ‘从您赢得的物品列表中删除购买 ’
根据 API 规范,参数buy=All表示将列表过滤为仅包含“立即购买”的列表。
参数rows=500表示对于经过身份验证的请求,每页的最大结果数为500。
参数page=4表示要返回的结果集的第4页。
所以请求应该是 GET https://api.tmsandbox.co.nz/v1/Search/General.JSON?buy=All&rows=500&page=4
-
API连通性
连通性测试通过并获得响应示例。
{
"TotalCount": 16479,
"Page": 4,
"PageSize": 500,
"List": [
...
{
"ListingId": 2149288229,
"Title": "The Shawshank Redemption (Special Edition)",
"Category": "0003-9232-9241-",
"StartPrice": 0,
"BuyNowPrice": 12,
"StartDate": "/Date(1625090253613)/",
"EndDate": "/Date(1625695053613)/",
"ListingLength": null,
"HasGallery": true,
"AsAt": "/Date(1625649443316)/",
"CategoryPath": "/Movies-TV/Bluray/Drama",
"PictureHref": "https://images.tmsandbox.co.nz/photoserver/thumb/104197832.jpg",
"Region": "Wellington",
"Suburb": "Wellington City",
"HasBuyNow": true,
"NoteDate": "/Date(0)/",
"ReserveState": 3,
"IsBuyNowOnly": true,
"PriceDisplay": "$12.00 per item",
"HasFreeShipping": true,
"PromotionId": 2,
"AdditionalData": {
"BulletPoints": [],
"Tags": []
},
"MemberId": 4007156
},
...
]
}
-
API检查点
检查“常规搜索”的功能是否有效,它可以从其对下游交易的响应中获取任何具有“HasBuyNow”功能的 ListingId ‘检索单个列表的详细信息 ‘或’使用立即购买的拍卖 ‘来使用.
然后我们根据示例功能得到下面的检查代码片段。
console.log("Post-Transaction: CheckingListingIdHasBuyNow Start");
pm.test("GetListingIdHasBuyNow", function () {
var jsonData = pm.response.json();
var Page = jsonData.Page;
var PageSize = jsonData.PageSize;
var arr =[];
var List = jsonData.List;
if (typeof(List) !== "undefined"){
for (i in List){
var ListingId = List[i].ListingId;
//Only pick the items that has the 'HasBuyNow' feature and the BuyNowPrice <= $20
if(List[i].HasBuyNow == true && List[i].BuyNowPrice <=20){
arr.push(ListingId);
}
}
postman.setEnvironmentVariable('ListingIdHasBuyNowCount', arr.length);
}
if(Array.isArray(arr) && arr.length === 0){
console.log(pm.response.json());
console.log("Didn't fetch any ListingId has the 'HasBuyNow' feature: " +SingleListingId);
console.log("Post-Transaction: CheckingListingIdHasBuyNow Failed");
}
else{
postman.setEnvironmentVariable('ListingIdHasBuyNow', arr);
console.log("Page: "+Page+", total items: "+PageSize);
console.log("'HasBuyNow and BuyNowPrice <=20' items counts to: " + arr.length + ", ListingId details: ");
console.log(arr);
// Randomly get one ListingId from the stored ListingId list that has the 'HasBuyNow' feature.
// The ListingId will be picked for downstream transaction 'RetrieveTheDetailsOfASingleListing' to use.
var ListingIdHasBuyNowCount = pm.environment.get("ListingIdHasBuyNowCount");
var ListingIdHasBuyNow=pm.environment.get("ListingIdHasBuyNow").split(",");
postman.setEnvironmentVariable('SingleListingId', ListingIdHasBuyNow[Math.floor(Math.random() * Number(ListingIdHasBuyNowCount))]);
var SingleListingId = pm.environment.get("SingleListingId");
console.log("Get random SingleListingId: " +SingleListingId);
console.log("Post-Transaction: CheckingListingIdHasBuyNow Pass");
}
});
运行脚本以从控制台日志验证检查点是否正常工作。
API 测试脚本增强
增强脚本,如添加事务功能、异常验证、参数化等。
运行最终脚本并从前端页面或控制台日志进行验证。
API 测试脚本否定案例扩展
使用我们在手动测试案例中所做的“等效类划分”和“边界值分析”。
这些API测试脚本都是做反方向的业务,作为上述API正案例的延伸。
API测试脚本发布
当我们完成 API 正面和反面案例时,将脚本从调试文件夹移动到公共文件夹。
然后等待使用 CICD 工具与其他脚本结合发布到 GitHub 特定存储库。