Friday, 9 June 2017

WebService Methods in Salesforce

1) You can't use the web-Service keyword to define an interface,
2) System defined enums cannot be used in Web-service methods
3) You can't use the webService keyword in a trigger
4) All classes that contain methods defined with the webService keyword must be declared as global.
5) Methods defined with the webService keyword are inherently global. These methods can be used by any Apex code that has access to the class. You can consider the webService keyword as a type of access modifier that enables more access than global
6) You should define any method that uses the web-Service keyword as static
7) You can't deprecate webService methods or variables in managed package code
8) Methods defined with the webService keyword cannot take the following elements as parameters. While these elements can be used within the method, they also cannot be marked as return values.
  • Maps
  • Sets
  • Pattern objects
  • Matcher objects
  • Exception objects

9) You can use the web-service modifier to define top level, outer class methods and variables, and member variables of an inner class. It can't be used on a class itself, or an interface or interface methods or variables.

NOTE:-  Invoking a custom webService method always uses system context. Consequently, the current user's credentials are not used, and any user who has access to these methods can use their full power, regardless of permissions, field-level security, or sharing rules. Developers who expose methods with the webService keyword should therefore take care that they are not inadvertently exposing any sensitive data

Apex class methods that are exposed through the API with the webService keyword don't enforce object permissions and field-level security by default

global class MyWebService {
    webService static Id makeContact(String lastName, Account a) {
        Contact c = new Contact(lastName = 'Weissman', AccountId = a.Id);
        insert c;