JavaScript编码考核:验证POST请求Body格式问题求助
解决Validation接口POST请求的结构问题
问题描述
我正在进行JavaScript编码考核,已经成功通过指定API拿到了movies和actors接口的数据,但卡在了validation接口的POST请求环节——不清楚正确的请求Body结构。尝试提交包含演员姓名与电影标题的内容时,出现错误:"Object reference not set to an instance of an object."
相关接口信息
1. Movies接口(GET)
curl --request GET \ --url https://switch-yam-equator.azurewebsites.net/api/movies \ --header 'x-chmura-cors: <access_token>'
返回示例:
[ { "movieId": 365478, "title": "Man with the Screaming Brain", "actors": [331341, 132257, 126364, 1646] }, ... ]
2. Actors接口(GET)
curl --request GET \ --url https://switch-yam-equator.azurewebsites.net/api/actors \ --header 'x-chmura-cors: <access_token>'
返回示例:
[ { "actorId": 168, "title": "Samuel L. Jackson" }, ... ]
3. Validation接口(POST)
curl --request POST \ --url https://switch-yam-equator.azurewebsites.net/api/validation \ --header 'x-chmura-cors: <access_token>' \ --data '<results>'
示例响应片段(存在语法错误):
[ { "Name": "Alan Smithee", "KRMovies": [ "The Matrix", "The Matrix Revolutions" ] "NCMovies": [
解决思路
修正JSON格式认知
你提供的Validation接口示例响应有语法错误(KRMovies数组末尾少逗号,NCMovies数组未闭合),但能明确接口期望的请求Body是JSON数组结构,每个元素必须包含三个字段:Name:演员姓名(对应actors接口的title字段)KRMovies:该演员实际参演的电影标题数组NCMovies:该演员未参演的电影标题数组
梳理数据关联关系
先把两组接口数据做映射处理:- 遍历actors接口的每个演员,用其
actorId匹配movies接口中actors数组包含该ID的电影,收集这些电影的标题作为KRMovies内容 - 从所有电影标题里剔除
KRMovies的内容,剩下的就是NCMovies的内容
- 遍历actors接口的每个演员,用其
检查请求头与提交方式
POST请求必须添加Content-Type: application/json请求头,确保接口能正确解析JSON格式的Body。如果用curl,建议把--data换成--json,它会自动带上正确的请求头。避免空值或缺失字段
错误"Object reference not set to an instance of an object."大多是因为请求里缺了必填字段,或者字段值为null/undefined。要保证Name、KRMovies、NCMovies三个字段都存在,哪怕数组为空也不能省略。正确请求Body示例
[ { "Name": "Samuel L. Jackson", "KRMovies": ["Man with the Screaming Brain"], "NCMovies": ["The Matrix"] } ]
内容的提问来源于stack exchange,提问作者Namees Albayate
相关产品推荐
相关产品推荐

