gpt4 book ai didi

java - 如何在 Django RESTful API 上解决 Retrofit @POST 上的 404?

转载 作者:太空狗 更新时间:2023-10-29 14:46:32 25 4
gpt4 key购买 nike

我能够使用改造和 REST api 从数据库中获取数据,但在发布数据时遇到错误。使用 postman 发表作品但不是通过retrofit .我一直无法找到错误。我尝试更改端点,即“rest”和“rest/”,但仍然没有找到错误。

Django RESTful api中Post的ApiView: view.py

def post(self,request):
serializer =table_restSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'results':serializer.data},status=201)
return Response(serializer.errors, status=404)

网址.py

    urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^rest',views.restSerializer.as_view())
]
urlpatterns = format_suffix_patterns(urlpatterns)

序列化器.py:

class table_restSerializer(serializers.ModelSerializer):

class Meta:
model = table_rest
fields = '__all__'

我的安卓代码:界面

public interface ApiInterface {

@GET("rest")
Call<CustomViewResponse> getJsonFromSid();

@POST("rest")
Call<CustomViewResponse> createTask(@Body CustomViewHolder task);
}

CustomViewHolder 类:

public class CustomViewHolder {

@SerializedName("id")
private Integer id;

@SerializedName("tt")
private String tt;

@SerializedName("varr")
private Integer varr;

@SerializedName("edi")
private String edi;
public CustomViewHolder(String tt, Integer varr, String edi){
this.tt = tt;
this.varr = varr;
this.edi = edi;
}

public Integer getid(){
return id;
}
/*public void setid(Integer id){
this.id = id;
}*/

public String gettt()
{
return tt;
}
public void settt(String tt){
this.tt = tt;
}

public Integer getvarr(){
return varr;
}

public void setvarr(Integer varr){
this.varr = varr;
}

public String getedi(){
return edi;
}

public void setedi(String edi){
this.edi = edi;
}
}

CustomViewResponse class
public class CustomViewResponse {

@SerializedName("results")
private List<CustomViewHolder> results;

public List<CustomViewHolder> getResults(){
return results;
}
}

主要 Activity :

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.sid_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
ApiInterface apiService1 = ApiClient.getClient().create(ApiInterface.class);
Call<CustomViewResponse> call = apiService.getJsonFromSid();

CustomViewHolder cc = new CustomViewHolder("my task title",22,"a string");

call.enqueue(new Callback<CustomViewResponse>() {
@Override
public void onResponse(Call<CustomViewResponse> call, Response<CustomViewResponse> response) {
int statuscode = response.code();
List<CustomViewHolder> customViewHolders = response.body().getResults();

recyclerView.setAdapter(new AdapterSid(customViewHolders, R.layout.list_item_sid, getApplicationContext()));
}

@Override
public void onFailure(Call<CustomViewResponse> call, Throwable t) {
Log.e("TAG main", t.toString());
}
});
call1.enqueue(new Callback<CustomViewResponse>() {
@Override
public void onResponse(Call<CustomViewResponse> call1, Response<CustomViewResponse> respo) {
int statuscode = respo.code();
Log.d("Message", "code..."+respo.code() + " message..." + respo.message());

CustomViewResponse respon = respo.body();

if (respon == null){
Log.e("Error",""+statuscode+ "......"+ respo.message()+"....null body");
}

}

@Override
public void onFailure(Call<CustomViewResponse> call1, Throwable t) {

Log.e(TAG, t.toString());
}
});
}

以下是我的表结构:

class table_rest(models.Model):

tt = models.CharField(max_length=10,default = 12)
varr = models.IntegerField(default=30)
edi = models.CharField(max_length=1000,default='44')

def __str__(self):
return self.tt

使用 postman 成功保存我的 Json 主体是:

{
"tt": "hello",
"varr": 911,
"edi": "emergency. Can't find solution"
}

最佳答案

请添加一个额外的 URL。

urlpatterns = [
url(r'^admin/', admin.site.urls), # Any URL starting with admin(ex: http://testdomainname.com/admin/xyz)
url(r'^rest/$',views.restSerializer.as_view()), # Any URL starting with only rest(ex: http://testdomainname.com/rest/)
url(r'^$',views.restSerializer.as_view()), # Any empty URL with '' (ex: http://testdomainname.com/)
]

关于java - 如何在 Django RESTful API 上解决 Retrofit @POST 上的 404?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39616094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com