Python 在炼金术中使用子资源

Python 在炼金术中使用子资源,python,sqlalchemy,eve,Python,Sqlalchemy,Eve,我正试图用eve sqlalchemy构建一个RESTful API。 我想使用公共模式,在那里我可以访问资源 因此: 127.0.0.1:5000/resource1/ 127.0.0.1:5000/resource1/2 127.0.0.1:5000/resource1/2/resource2 127.0.0.1:5000/resource1/2/resource2/4 127.0.0.1:5000/resource2/ 127.0.0.1:5000/resource2/4 其中resou

我正试图用eve sqlalchemy构建一个RESTful API。 我想使用公共模式,在那里我可以访问资源 因此:

127.0.0.1:5000/resource1/
127.0.0.1:5000/resource1/2
127.0.0.1:5000/resource1/2/resource2
127.0.0.1:5000/resource1/2/resource2/4
127.0.0.1:5000/resource2/
127.0.0.1:5000/resource2/4
其中
resource1
resource2
处于父子连接中。 我检查了海军学员的问题:但是如果我在
resource2
中使用“url”配置,则无法使用原始
127.0.0.1:5000/resource2/4
127.0.0.1:5000/resource2

如果我为
resource2
定义了一个额外的端点,并在那里使用“url”配置,那么同样的情况也会发生,我无法以普通方式访问
resource2
。 有没有办法达到预期效果,还是我做错了什么

源代码:

models.py:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer, DECIMAL, DATETIME, ForeignKey
from sqlalchemy.orm import relationship


Base = declarative_base()

class CommonColumbs(Base):
    __abstract__ = True
    ID = Column(Integer, primary_key=True)
    CreatedAt = Column(DATETIME)
    CreatedBy = Column(String)
    LastModifiedAt = Column(DATETIME, nullable=True)
    LastModifiedBy = Column(String)
    Etag = Column(String)

class MeasurementUnitTypes(CommonColumbs):
    __tablename__ = 'MeasurementUnitTypes'
    Name = Column(String)
    IsValid = Column(Integer)
    IsSpecial = Column(Integer)
    BaseUnitID = Column(Integer, ForeignKey('api.MeasurementUnits.ID'))
    BaseUnit = relationship("MeasurementUnits", foreign_keys=[BaseUnitID])
    __table_args__ = {"schema": "api"}

class MeasurementUnits(CommonColumbs):
    __tablename__ = 'MeasurementUnits'
    Name = Column(String)
    ConvertValue = Column(DECIMAL(asdecimal=False))
    CodeToBase = Column(String)
    CodeFromBase = Column(String)
    MeasurementUnitTypeID = Column(Integer, ForeignKey('api.MeasurementUnitTypes.ID'))
    MeasurementUnitType = relationship("MeasurementUnitTypes", foreign_keys=[MeasurementUnitTypeID])
    IsValid = Column(Integer)
    __table_args__ = {"schema": "api"}
setting.py:

from vm.models import MeasurementUnitTypes, MeasurementUnits
from vm import dbc
from eve_sqlalchemy.decorators import registerSchema

# --- registering schemas --- #
registerSchema('MeasurementUnits')(MeasurementUnits)
registerSchema('MeasurementUnitTypes')(MeasurementUnitTypes)
# ---------- end ------------ #


SQLALCHEMY_DATABASE_URI = dbc()

# ---- field definition ----- #
ID_FIELD = 'ID'
LAST_UPDATED = 'LastModifiedAt'
DATE_CREATED = 'CreatedAt'
ETAG = 'Etag'
# ---------- end ------------ #

SQLALCHEMY_ECHO = True
SQLALCHEMY_RECORD_QUERIES = True

DOMAIN = {
    'MeasurementUnitTypes': MeasurementUnitTypes._eve_schema['MeasurementUnitTypes'],
    'MeasurementUnits': MeasurementUnits._eve_schema['MeasurementUnits'],
}

DOMAIN['MeasurementUnitTypes'].update({
    'item_title': 'MeasurementUnitTypes',
    'additional_lookup': {
        'url': '[0-9]+',
        'field': 'ID',
    },
    'cache_control': 'max-age=10,must-revalidate',
    'cache_expires': 10,
    'resource_methods': ['GET', 'POST', 'DELETE'],
    'item_methods': ['GET', 'PUT'],
    'hateoas': False,
    'pagination': False,
    'data_relation': {'resource': 'MeasurementUnits',
                      'field': 'ID',
                      'embeddable': True}

})

DOMAIN['MeasurementUnits'].update({
    'item_title': 'MeasurementUnits',
    'additional_lookup': {
        'url': '[0-9]+',
        'field': 'ID',
    },
    'cache_control': 'max-age=10,must-revalidate',
    'cache_expires': 10,
    'resource_methods': ['GET', 'POST', 'DELETE'],
    'item_methods': ['GET', 'PUT'],
    'hateoas': False,
    'pagination': False
})

EMBEDDING = True