programing

retroft 2 @path vs @query

nicescript 2022. 10. 20. 21:29
반응형

retroft 2 @path vs @query

저는 2 도서관을 새로 개조했습니다.초심자를 시작하기 위해 몇 개의 기사를 읽고 파라미터를 지정하지 않고 RESTful API에서 XML 데이터를 가져올 수 있었습니다.XML 리소스를 생성한 내 방법은 다음과 같습니다.

@GET
@Path("/foods")
@Produces(MediaType.APPLICATION_XML)
public List<FoodPyramid> getFoodPyramid() {
    Session session = HibernateUtil.getSessionFactory().openSession();
    trans = session.beginTransaction();
    List<FoodPyramid> foodList = session.createQuery("from FoodPyramid").list();
    try {
        trans.commit();
        session.close();
    } catch (Exception e) {
        session.close();
        System.err.println("Food Pyramid fetch " + e);
    }
    System.err.println("Am in the food modal. . . . . . . .");
    return foodList;
}

인터페이스에서 파라미터를 전달하려고 했을 때

@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Query("username") String username, @Query("password") String password);  

클라이언트에 의해 데이터가 수신되지 않아 실행할 수 없습니다.비파라미터 호출을 사용하여 리소스를 가져와서 수정하는 데 1주일이 걸렸습니다.그래서 다음 항목으로 변경하려고 했습니다.

@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Path("username") String username, @Path("password") String password);  

잘 작동했어요제 질문은 다음과 같습니다.언제 사용해야 합니까?@Query그리고.@Path개조 2의 주석?

다음 URL을 고려하십시오.

www.app.net/api/searchtypes/862189/filters?Type=6&SearchText=School

다음은 콜입니다.

@GET("/api/searchtypes/{Id}/filters")
Call<FilterResponse> getFilterList(
          @Path("Id") long customerId,
          @Query("Type") String responseType,
          @Query("SearchText") String searchText
);

다음과 같은 것이 있습니다.

www.app.net/api/searchtypes/{Path}/filters?Type={Query}&SearchText={Query}

? 뒤에 오는 것은 보통 쿼리입니다.

예를 들어 다음과 같습니다.

@GET("/user/{username}?type={admin}")

여기서usernamepath변수 및type쿼리 변수입니다.

@GET("/user/{username}?type={admin}")
void getUserOuth(@Path("username") String username, @Query("type") String type)

Kotlin 응답

예를 들어, post ID를 가진 목록에서 특정 게시물을 가져옵니다.

@GET("Posts/{post_id}")
suspend fun getPost(@Path("post_id") postId: String): Response<Post>

주의: 이 예에서는 Post가 데이터 모델 클래스입니다.

@Query

  • 이 주석은 네트워크 요청과 함께 전송되는 쿼리 키 값 쌍을 나타냅니다.

@Path

  • 이 주석은 전달된 매개 변수가 끝점 경로에서 스왑됨을 의미합니다.

@경로 주석 사용자 고유의 방법으로 파라미터 순서를 지정합니다.그리고 url에 순서를 정의했다.

@GET("user/{username}/{password}")
Call<List<UserCredentail>> getUserOuth(@Path("username") String username, @Path("password") String password);

@매개변수의 주석 자동 순서를 쿼리하고 "?" 기호를 포함한 URL을 추가했습니다.

   @GET("user")
    Call<List<UserCredentail>> getUserOuth(@Query("username") String username, @Query("password") String password);

경로는 경로에 정의된 항목을 바꾸기 위해 사용됩니다.

@POST("setting/update_notification_status/{c_notification_id}")
Call<JsonObject> updateNotificationStatus(@Header("Sessionkey") String token, @Path("c_notification_id") String c_notification_id );

@Path는 백워드 슬래시 뒤에 '/' 동적 값이 있는 URL이 있을 때 사용됩니다.예: http://google.com/index.html/userid따라서 이 URL에서 /userid는 동적이므로 이 URL에 액세스하려면 @Get("index.html/{userid}) Calldata(@Path("userid")int id)이어야 합니다.

@Query는 물음표 뒤에 동적 값이 ?인 URL이 있을 때 사용합니다.예: "http://google.com/index.html?userid.So in this url ?userid는 역동적이므로 이 URL에 액세스하려면 @Get("index.html") Calldata(@Query("userid")int id)로 요청해야 합니다.

쿼리는 URL 파라미터에 사용되며 @Query("password")에서는 URL은 다음과 같습니다.

user/john?password=****

경로는 경로에 정의된 항목을 바꾸기 위해 사용됩니다.

user/{username}

언급URL : https://stackoverflow.com/questions/37698501/retrofit-2-path-vs-query

반응형