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}")
여기서username
는path
변수 및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
'programing' 카테고리의 다른 글
(void (*)부프)(;)는 무슨 뜻입니까? (0) | 2022.10.20 |
---|---|
Amazon RDS 백업/스냅샷은 실제로 어떻게 작동합니까? (0) | 2022.10.20 |
PHP에서 특성을 확장하는 방법이 있나요? (0) | 2022.10.20 |
잭슨을 사용하여 오브젝트에 raw JSON을 포함하려면 어떻게 해야 합니까? (0) | 2022.10.20 |
Python에서 문자열을 더블로 변환하려면 어떻게 해야 하나요? (0) | 2022.10.20 |