0
class Patient(EndpointsModel): 
    user = EndpointsUserProperty(required=True, raise_unauthorized=True) 
    date_of_birth = EndpointsDateProperty() 
    age = ndb.IntegerProperty() 

    def calculate_age(self): 
     today = date.today() 
     birthday = self.date_of_birth 
     self.age = today.year - birthday.year - ((today.month, today.day) < (birthday.month , birthday.day)) 

    def _pre_put_hook(self): 
     if self.date_of_birth: 
      self.calculate_age() 

.... 
api_root = endpoints.api(name='ffsapi', version='vGDL', 
        description='API for whole app') 


@api_root.api_class(resource_name="patient") 
class PatientApi(remote.Service): 

    @Patient.method(
        request_fields=('name', 'date_of_birth'), 
        name='insert', 
        path='patient', 
        http_method='POST') 
    def insert_patient(self,patient): 
     if patient.date_of_birth: # TODO find a better way 
      if patient.date_of_birth.year <1900: 
       raise endpoints.BadRequestException('date <= 1900') 
     patient.put() 
     return patient 

    @Patient.query_method(user_required=True, 
          query_fields=['name'], 
          name='query', 
          path='patient') 
    def query_patient(self,query): 
     return query 
.... 
application = endpoints.api_server([api_root], restricted=False) 

這是我運行endpointscfg.py時的文件,它告訴我它不是ProtoRPC服務。我已經嘗試過應用程序,api_root和ffsapi。代碼部署良好的工作很好,只是無法讓圖書館的編譯工作。無法讓庫編譯雲端點python

這裏是YAML文件是否有幫助

application: ******(im just hiding it) 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: yes 

handlers: 
- url: /favicon\.ico 
    static_files: favicon.ico 
    upload: favicon\.ico 

- url: .* 
    script: main.application 

# Endpoints handler 
- url: /_ah/spi/.* 
    script: main.application 


libraries: 
- name: webapp2 
    version: "2.5.2" 
# Needed for endpoints/users_id_token.py. 
- name: pycrypto 
    version: "2.6" 
- name: endpoints 
    version: 1.0 

回答

0

在這種情況下,因爲你只實現一個類的API,你應該裝點PatientApi類與@endpoints.api裝飾而不是單獨調用endpoints.api()並將結果分配給一個變量。然後,您可以創建一個API服務器:

application = endpoints.api_server([PatientApi], restricted=False)

最後,以使用endpointscfg.py開放API規範,你會傳遞main.PatientApi(假設你的源文件名爲main.py) 。