You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rest Assured调用Google Places API时实际值为null,Postman显示有值

问题排查与修复方案

嘿,我一眼就发现了几个关键问题,这正是你断言失败的根源:

1. Location参数丢失负号

你在Postman里的请求坐标是-33.8670522,151.1957362(悉尼附近区域),但Rest Assured代码里写的是:

.param("location", "33.8670522,151.1957362")

少了开头的负号!这直接导致请求的地理位置完全错误,返回的餐厅列表和Postman里的结果毫无关联,自然找不到你预期的results[0].geometry.viewport.northeast.lat值,所以断言时拿到null。

2. 缺少keyword参数

Postman请求里有keyword=cruise用来过滤结果,但你的代码里完全遗漏了这个参数:

// 代码中缺失的关键过滤参数
.param("keyword", "cruise")

没有这个过滤条件,返回的第一个结果根本不是你在Postman中看到的那家餐厅,这也是断言失败的核心原因之一。

修正后的完整代码

把这两个问题修复后,代码应该是这样的:

package rest.basic.testing;

import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;

public class GetRequestSample {
    static String baseURI = "https://maps.googleapis.com";

    public static void main(String[] args) {
        searchPlaceInGoogle();
    }

    public static void searchPlaceInGoogle() {
        RestAssured.baseURI = baseURI;

        given()
            .param("location", "-33.8670522,151.1957362") // 补全坐标负号
            .param("radius", "1500")
            .param("type", "restaurant")
            .param("keyword", "cruise") // 添加缺失的过滤参数
            .param("key", "AIzaSyDWz5aGXygtrt3hsn99yXv_oocw09PSOHE")
        .when()
            .get("maps/api/place/nearbysearch/json")
            .log().all() // 建议保留,方便查看请求和响应详情
        .then()
            .assertThat().statusCode(200)
            .and().contentType(ContentType.JSON)
            .and().body("results[0].geometry.viewport.northeast.lat", equalTo(-33.85723597010728)); // 注意用数字类型,不要加引号

        System.out.println("Request is executed successful");
    }
}

还有个小细节:预期值-33.85723597010728是数字类型,不要用字符串包裹,否则会因为类型不匹配导致断言失败。

调试小技巧

以后遇到这类问题,可以在.get()后面加上.log().all(),这样能打印出完整的请求信息和响应体,对比Postman的请求就能快速定位差异点啦。

内容的提问来源于stack exchange,提问作者Merlin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:07:51