Declares an API to be included in this API.
The including API must redeclare all the methods from the included API, but documentation and options are inherited as follows:
Example of a simple mixin:
package google.acl.v1; service AccessControl { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = "/v1/{resource=**}:getAcl"; } } package google.storage.v2; service Storage { rpc GetAcl(GetAclRequest) returns (Acl); // Get a data record. rpc GetData(GetDataRequest) returns (Data) { option (google.api.http).get = "/v2/{resource=**}"; } }
Example of a mixin configuration:
apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl
The mixin construct implies that all methods in AccessControl
are also declared with same name and request/response types in Storage
. A documentation generator or annotation processor will see the effective Storage.GetAcl
method after inheriting documentation and annotations as follows:
service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = "/v2/{resource=**}:getAcl"; } ... }
Note how the version in the path pattern changed from v1
to v2
.
If the root
field in the mixin is specified, it should be a relative path under which inherited HTTP paths are placed. Example:
apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl root: acls
This implies the following inherited HTTP annotation:
service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; } ... }
Constructors and Destructors |
|
---|---|
Mixin()
|
|
Mixin(Mixin other)
|
Properties |
|
---|---|
Descriptor
|
pbr::MessageDescriptor
|
Descriptor
|
pbr::MessageDescriptor pb::IMessage.
|
Name
|
string
The fully qualified name of the API which is included.
|
Parser
|
pb::MessageParser< Mixin >
|
Root
|
string
If non-empty specifies a path under which inherited HTTP paths are rooted.
|
Public attributes |
|
---|---|
NameFieldNumber = 1
|
const int
Field number for the "name" field.
|
RootFieldNumber = 2
|
const int
Field number for the "root" field.
|
Public functions |
|
---|---|
CalculateSize()
|
int
|
Clone()
|
|
Equals(object other)
|
override bool
|
Equals(Mixin other)
|
bool
|
GetHashCode()
|
override int
|
MergeFrom(Mixin other)
|
void
|
MergeFrom(pb::CodedInputStream input)
|
void
|
ToString()
|
override string
|
WriteTo(pb::CodedOutputStream output)
|
void
|
pbr::MessageDescriptor Descriptor
pbr::MessageDescriptor pb::IMessage. Descriptor
string Name
The fully qualified name of the API which is included.
pb::MessageParser< Mixin > Parser
string Root
If non-empty specifies a path under which inherited HTTP paths are rooted.
int CalculateSize()
Mixin Clone()
override bool Equals( object other )
bool Equals( Mixin other )
override int GetHashCode()
void MergeFrom( Mixin other )
void MergeFrom( pb::CodedInputStream input )
Mixin()
Mixin( Mixin other )
override string ToString()
void WriteTo( pb::CodedOutputStream output )