Yes, We can have work around for optional parameter.
See the below code,
if you call
http://<uri>/get - It will call the GetAllertion method
http://<uri>/get/12 - It will call the GetAPerson method with parameter alue 12
So these URL act as optional paramter
[OperationContract]
[WebGet(UriTemplate = "get" )]
List<person> GetAllPerson();
[OperationContract]
[WebGet(UriTemplate = "get/{id}")]
Person GetAPerson(string id);</person>
Let me know if it is helps to you.
Artha