2016-04-09 4 views
1

ich ein Google-Endpunkt in meiner App Engine Server erstellt haben, wie folgt:App Engine Endpunkt POST-Daten in Anforderung Körper zu akzeptieren

package com.xxxxx.gcmbackend; 
import com.google.api.server.spi.config.Api; 
import com.google.api.server.spi.config.ApiMethod; 
import com.google.api.server.spi.config.ApiNamespace; 
import com.google.api.server.spi.response.CollectionResponse; 

import java.util.List; 
import java.util.logging.Logger; 
import javax.inject.Named; 

import static com.xxxxxx.gcmbackend.OfyService.ofy; 

@Api(
     name = "register", 
     version = "v1", 
     namespace = @ApiNamespace(
       ownerDomain = "gcmbackend.xxxxx.com", 
       ownerName = "gcmbackend.xxxxx.com", 
       packagePath="" 
     ) 
) 


public class UserRegistrationEndpoint { 
    private static final Logger log = Logger.getLogger(RegistrationEndpoint.class.getName()); 
    @ApiMethod(name = "register") 
    public void registerDevice(@Named("regId") String regId, @Named("username") String username, @Named("phone") String phone) { 
     if(findRecord(regId) != null) { 
      log.info("Device " + regId + " already registered, skipping register"); 
      return; 
     } 
     RegistrationRecord record = new RegistrationRecord(); 
     record.setRegId(regId); 
     record.setUsername(username); 
     record.setPhone(phone); 
     ofy().save().entity(record).now(); 
    } 
    private RegistrationRecord findRecord(String regId) { 
     return ofy().load().type(RegistrationRecord.class).filter("regId", regId).first().now(); 
    } 
} 

Das funktioniert perfekt in neue User Aufzeichnungen zu schaffen. Die API ist in folgendem Format:

http://example.appspot.com/_ah/api/register/v1/registerDevice/<regId>/<username>/<phone> 

Allerdings möchte ich die URL wie folgt aussehen:

http://example.appspot.com/_ah/api/register/v1/registerDevice/ 

und dann POST-Daten senden, wie folgt:

{ 
    regId: "some_value", 
    username: "some_value", 
    phone: "some_value" 
} 

Was tun Muss ich meinen Endpunkt ändern, um dieses Format zu erreichen?

Antwort

1

Sie müssen eine Java-Bean mit den Attributen regId, username und phone erstellen, z. RegistrationInput.

public class RegistrationInput { 
    private String regId; 
    private String username; 
    private String phone; 

    public String getRegId() { 
     return regId; 
    } 

    public void setRegId(String regId) { 
     this.regId = regId; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getPhone() { 
     return phone; 
    } 

    public void setPhone(String phone) { 
     this.phone = phone; 
    } 
} 

Dann fügen Sie den obigen Java Bean RegistrationInput, als Parameter an die ApiMethod

@ApiMethod(name = "register") 
public void registerDevice(RegistrationInput input) { 
    ..... 
} 
+0

Hey! Kannst du es etwas weiter erklären? Ich bin neu in Java, also bin ich nicht wirklich sicher, was Sie mit Java Bean meinen und wie es aussehen würde. – Newtt

+0

Die Antwort wurde aktualisiert. Eine Java-Bean ist eine einfache Klasse mit wenigen Attributen. Es hat auch Getter- und Setter-Methoden für jedes der Attribute. – Mithun

Verwandte Themen